package mx.edu.itschapala.sistemas.septimo.control;

import java.io.*;
import java.util.*;
import  mx.edu.itschapala.sistemas.septimo.modelo.*;
import mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda2;
import static mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda2.CONTIENE2;
import static mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda2.INICIAR2;


public class ClienteLnArchivo implements ClienteLnLocal{

private List<Cliente> lista = new ArrayList<Cliente>();
private Cliente cliente;
    private String nombre;
  //  private Cliente c;

    public void registrar(Cliente cliente){
        try {
            FileOutputStream file = new FileOutputStream("cliente.txt",true);
            ObjectOutputStream out = new ObjectOutputStream(file);
            lista.add(cliente);
            out.writeObject(cliente);
            out.close();
        } catch (Exception e) {
                System.out.println("Error en el archivo");
        }
    }
    public void modificar(Cliente cliente){
       lista= new ArrayList<Cliente>();
               
        try {
                FileInputStream file = new FileInputStream("cliente.txt");
           ObjectInputStream in = new ObjectInputStream(file);
            Object o =  in.readObject();
            while (o!=null) {
               lista.add((Cliente)o);
               o=in.readObject();
                
            }
            
        } catch (Exception e) {
        } 
        Cliente bloss =null;
for (Cliente c : lista ) {
		
		if(c.getid()==cliente.getid()){
	
	bloss = c;
	break;
		}
	


	}

	lista.set(lista.indexOf(bloss),cliente);
        
        
        
        
        
    }
    public void eliminar(Cliente cliente){
                        lista= new ArrayList<Cliente>();
               
        try {
                FileInputStream file = new FileInputStream("cliente.txt");
           ObjectInputStream in = new ObjectInputStream(file);
            Object o =  in.readObject();
            while (o!=null) {
               lista.add((Cliente)o);
               o=in.readObject();
                
            }
            
        } catch (Exception e) {
        } 
         for (Cliente c: lista){

 	if(c.getid()==cliente.getid()){
 		cliente=c;
}
  
		lista.remove(cliente);

}
    }
    public Cliente buscarPorid(int id){
                lista= new ArrayList<Cliente>();
               
        try {
                FileInputStream file = new FileInputStream("cliente.txt");
           ObjectInputStream in = new ObjectInputStream(file);
            Object o =  in.readObject();
            while (o!=null) {
               lista.add((Cliente)o);
               o=in.readObject();
                
            }
            
        } catch (Exception e) {
        } 
        for (Cliente c : lista ) {
		
		if(c.getid()==id){
	cliente = c;
	break;
		}
		
	}

 return cliente;
   

            }

    public List<Cliente> getTodos(){
        lista= new ArrayList<Cliente>();
        try {
                FileInputStream file = new FileInputStream("cliente.txt");
           ObjectInputStream in = new ObjectInputStream(file);
            Object o =  in.readObject();
            while (o!=null) {
               lista.add((Cliente)o);
               o=in.readObject();
                
            }
            
        } catch (Exception e) {
        } 
    return lista ;
            }
    
    @Override
    public List<Cliente> getPorNombre(String nombre, TipoBusqueda2 Criterio) {
          List<Cliente> tmp = new ArrayList<Cliente>();
        switch (Criterio) {
            case INICIAR2:
                for (Cliente c : lista) {
                    if (c.getnombre().startsWith(nombre)) {
                        tmp.add(c);
                    }
                }
                break;
            case CONTIENE2:
                for (Cliente c : lista) {
                    if (c.getnombre().startsWith(nombre)) {
                        tmp.add(c);
                    }
                }
                break;

        }
        return tmp;
    }

    
    
    
    
}